草庐IT

c++ - 在 C++ 类中前向声明 typedef

全部标签

ruby-on-rails - 如何找到声明 ruby​​ 方法的位置?

我在activeRecord类上有一个ruby​​方法(停用!)。但是,我似乎找不到该方法的声明位置。这个项目有很多开发人员,所以它可能在任何地方。有一个停用!在一个不相关的类上,但它似乎没有被调用。任何想法如何找到一个实例的所有父类(superclass),或者在哪里找到停用的代码!? 最佳答案 第一个问题是:它是一个实际的方法吗?obj.method(:deactivate!)会引发错误吗?如果不支持,那么您可以使用Method#source_location(仅在Ruby1.9中,backports不支持):obj.metho

ruby - 在类中调用类方法

我意识到这可能是一个天真的问题,但我仍然无法弄清楚如何在Ruby类中从另一个方法调用一个方法。即在Ruby中是否可以执行以下操作:classAdefmet1enddefmet2met1#calltopreviouslydefinedmethod1endend谢谢,马币 最佳答案 那些不是类方法,它们是实例方法。您可以在示例中使用类的实例从met2调用met1而不会出现问题:classAdefmet1puts"Inmet1"enddefmet2met1endendvar1=A.newvar1.met2下面是使用类方法的等效方法,您通过

ruby - 为什么扩展模块中的常量在用 self. 声明的类方法中不可用?

我认为在class中声明的方法之间没有区别block和用self.声明的block前缀,但有:moduleAVAR='some_constant'endclassBextendAclassOKB.m2#=>uninitializedconstantB::VAR为什么A的常量是可用m1但不在m2? 最佳答案 在Ruby中,常量查找与方法查找不同。对于方法查找,调用foo始终与调用self.foo相同(假设它不是私有(private)的)。调用常量FOO与self::FOO非常不同或singleton_class::FOO.使用非限定常

ruby - 在 Ruby 中声明变量?

在Ruby中我什么时候知道什么时候声明一个变量而不是什么时候声明?我想知道为什么第一个代码需要将输入声明为字符串并在block之外,而第二个代码不需要。input=''whileinput!='bye'putsinputinput=gets.chompendputs'Comeagainsoon!'对比:whiletrueinput=gets.chompputsinputifinput=='bye'breakendendputs'Comeagainsoon!' 最佳答案 Ruby中从未声明过任何变量。相反,规则是变量在使用前必须出现在

ruby - 列出模块在 Ruby 中声明的所有类型

如何在Ruby中列出模块声明的所有类型? 最佳答案 使用Module模块中定义的constants方法。来自Ruby文档:Module.constants=>arrayReturnsanarrayofthenamesofallconstantsdefinedinthesystem.Thislistincludesthenamesofallmodulesandclasses.pModule.constants.sort[1..5]produces:["ARGV","ArgumentError","Array","Bignum","Bi

ruby - 如何确定 Rails 3 模型类中的表名

我想在模型方法中获取表名。我found应该有方法table_name但是当我尝试调用它时我得到NameErrorException:undefinedlocalvariableormethod`table_name'。显然不存在:ppmethods.grep(/^ta.*/)["table_name_prefix?","table_name_suffix?","taint","taguri","taguri=","tainted?","table_name_prefix","table_name_suffix","tap"]如何获得“真实的”表名(无小写-复数技巧)?谢谢

ruby - 在一个类中混合 attr_accessor 和初始化方法

我看到这样的代码:classPersondefinitialize(name)@name=nameendend我知道这让我可以做person=Person.new之类的事情,并像其他方法一样在我的类中的其他地方使用@name。然后,我看到了如下代码:classPersonattr_accessor:nameend...person=Person.newperson.name="David"我只是对这两种方法网格不知所措。definitialize(name)的特殊用途是什么?我想attr_accessor允许我读写。这意味着它们是两种不同的方法。是的?想要澄清definitialize

ruby - 如何在 Nokogiri 中使用带有 XPath 的 xmlns 声明

我正在使用Nokogiri::XML来解析来自AmazonSimpleDB的响应。响应类似于:Foo42BarXYZ如果我直接将响应交给Nokogiri,所有XPath查询(例如doc/"//Item/Attribute[Name='Foo']/Value")都会返回一个空数组。但是,如果我从SelectResponse标记中删除xmlns属性,它就可以正常工作。我需要做一些额外的事情来解释命名空间声明吗?这种解决方法感觉非常像黑客攻击。 最佳答案 该XPath查询查找不在任何命名空间中的元素。您需要告诉您的XPath处理器您正在寻

ruby - 为什么即使未执行该代码路径,Ruby 似乎也会从 case 语句内部提升变量声明?

这个问题在这里已经有了答案:WhycanIrefertoavariableoutsideofanif/unless/casestatementthatneverran?(3个答案)关闭5年前。我们定义一个函数foo:deffoo(s)caseswhen'foo'x=3putsx.inspectwhen'bar'y=4putsy.inspectendputsx.inspectputsy.inspectend然后我们这样调用它:1.9.3p194:017>foo('foo')infooscope3inouterscope3nil=>nil1.9.3p194:018>foo('bar')in

ruby - 如何声明依赖于参数化任务的 Rake 任务?

我见过任务具有参数和依赖任务的示例,例如:task:name,[:first_name,:last_name]=>[:pre_name]do|t,args|args.with_defaults(:first_name=>"John",:last_name=>"Dough")puts"Firstnameis#{args.first_name}"puts"Lastnameis#{args.last_name}"end如果它是一个任务依赖项,你将如何将参数传递给name任务:task:sendLetter=>:name#dosomethingend 最佳答案